home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Extra 1996 #2
/
Amiga Plus CD - 1996 - No. 2 Extra.iso
/
clarissa1_1-demo
/
macros
/
optima.clssa
< prev
next >
Wrap
Text File
|
1995-01-26
|
7KB
|
316 lines
/***********************************************************************
$DAT >>OptimA.clssa<< 25.10.1993 - (C) ProDAD Holger Burkarth
24.01.1995 - (C) ProDAD Michael Christoph
************************************************************************/
Options RESULTS
Address clariSSA
FailAt 11
AltFail=RESULT
GetPref
M_Pref=RESULT
SetPref "HBComp OFF LaceCompensation OFF COMPRESS 5"
GetPlayMode
M_PlayMode=RESULT
SetPlayMode "FOREVER ON HarmLoop OFF DFPMode ON"
DO FOREVER
DO FOREVER
WorkAnim="Source_A"
IF TestReg(WorkAnim)=0 THEN LEAVE
WorkAnim="Source_B"
IF TestReg(WorkAnim)=0 THEN LEAVE
WorkAnim="Source_C"
IF TestReg(WorkAnim)=0 THEN LEAVE
WorkAnim="Source_D"
IF TestReg(WorkAnim)=0 THEN LEAVE
WorkAnim=""
LEAVE
END
IF WorkAnim="" THEN DO
SelectAnim "Source_A Source_B Source_C Source_D",
"TITLE 'Wählen Sie ein Arbeits-Register zur@Zwischenspeicherung aus.'",
"REQ"
IF RC > 1 THEN LEAVE
WorkAnim=RESULT
CloseAnim WorkAnim
IF RC > 1 THEN LEAVE
END
SelectAnim Master
GetAnimInfo
IF RESULT~="" THEN DO
PARSE VAR RESULT ."ID" AnimID . "FORMAT" ex ey et "VIEWMODE" eViewMode "FRAMES" frames .
IF CheckAnimIDChange(AnimId,1)=1 THEN DO
MSRequester "TITLE '*** Optimierung ***'",
"'Optimierung der Master-Animation'",
"''",
"'("AnimID") FORMAT: "ex ey et eViewMode " FRAMES:" frames "'",
"''",
"'Das Macro versucht die Animation so zu verändern,'",
"'daß sie flüssig abläuft.'",
"''",
"'Sollte nach dieser Optimierung die Animation immer'",
"'noch nicht flüssig ablaufen, dann schalten Sie in'",
"'den Abspielarten-Einstellungen den DFPmodus aus.'",
"PTEXT 'Vollautomatische Optimierung starten'",
"'** Abbruch **'"
IF RC~=0 | RESULT>1 THEN LEAVE
res=AutoOpti(WorkAnim,1)
IF res~="BREAK" THEN Message "'Optimierung beendet'"
END
ELSE DO
Message "'Diese Animation kann nicht''(weiter) optimiert werden.'"
END
END
ELSE DO
Message "'Keine Master-Animation vorhanden'"
LEAVE
END
LEAVE
END
RequestStatus ON
SetPref M_Pref
SetPlayMode M_PlayMode
FailAt AltFail
exit
TestReg: procedure
DO
ARG Reg
GetAnimInfo Reg
IF RESULT~="" THEN RETURN(1)
RETURN (0)
END
GetVersion: procedure
DO
Information
PARSE VAR RESULT . "VERSION:" cl .
RETURN (cl)
END
CheckAnimIDChange: procedure
DO
ARG ID,Mode
IF Mode=1 THEN DO
IF ID='SSA ' THEN RETURN(1)
END
ELSE IF Mode=2 THEN DO
IF ID='MDHD' THEN RETURN(0)
RETURN(1)
END
RETURN (0)
END
RecordSSA5: procedure
DO
ARG WorkAnim
Message "'Umwandlung nach High-End-SSA ist''nur in der Professionel-''Version möglich.'"
RETURN (0)
END
AutoOpti: procedure
DO
ARG WorkAnim,Auto
SelectAnim MASTER
GetAnimInfo
PARSE VAR RESULT . "VIEWMODE" ViewMode "FRAMES" .
GetArea
M_Area=RESULT
PARSE VAR RESULT "FROM" start "TO" end .
RequestStatus OFF
NewRun=1
IF end-start >32 THEN Zeilen=16
ELSE Zeilen=(end-start)/2
Chars=40
CPM.0="A s-"
CPM.1="B s+"
CPM.2="B s++"
CPM.3="High-End-SSA"
/*** Delta,Machine ***/
MAT.1 = " Standard (ohne Hardwaredaten)"
MAT.2 = "CPU 68030 & ECS-Chipset"
MAT.3 = "CPU 68030 & AGA-Chipset"
MAT.4 = "CPU 68040 & ECS-Chipset"
MAT.5 = "CPU 68040 & AGA-Chipset"
/*** 1=s-, 2=B+, 3=B++ **/
MA.1.1 = 25000 ; MA.2.1 = 30000 ; MA.3.1 = 44000
MA.1.2 = 25000 ; MA.2.2 = 30000 ; MA.3.2 = 44000
MA.1.3 = 36000 ; MA.2.3 = 45000 ; MA.3.3 = 59000
MA.1.4 = 30000 ; MA.2.4 = 37000 ; MA.3.4 = 50000
MA.1.5 = 39000 ; MA.2.5 = 47000 ; MA.3.5 = 62000
MA_Max=5
CP_Max=3 /* Kompressionsmodi */
ViewFak=1
IF INDEX(ViewMode,"SUPERHIRES")>0 THEN ViewFak=0.35
ELSE IF INDEX(ViewMode,"HIRES")>0 THEN ViewFak=0.65
a=""; l=1
DO UNTIL l>MA_Max
a=a "'" MAT.l "'"
l=l+1
END
MSRequester "TITLE '*** Optimierung ***'",
"''",
"'Die Optimierung bezieht sich auf die'",
"'Hardware und kann hier ausgewählt werden.'",
"PTEXT" a,
"'** Abbruch **'"
IF RC~=0 | RESULT>MA_Max THEN RETURN(0)
Machine=RESULT
l=start;
DO UNTIL l>end
l=l+1
FrameMode.l = 1
END
SetPref "COMPRESS 1"
ACRepair
DO FOREVER
Ende=1
SetWorkLock ON
flag=0
/****** nur in Professionel V3
/***** Scan-Lauf *****/
l=start; FrameMem.0 =0
DO UNTIL l>end
GetDeltaInfo "FROM" l "TO" l
PARSE VAR RESULT . "MEM" mem .
l=l+1
FrameMem.l = mem
END
ll=1; zmin=10000000; zmax=0
Anz=end-start+1
DO UNTIL ll>Zeilen
l=TRUNC((ll-1)*Anz/Zeilen+start)
le=TRUNC(ll*Anz/Zeilen+start-1)
xmax=0
DO UNTIL l>le
l=l+1
IF FrameMem.l>xmax & l~=2 THEN xmax=FrameMem.l
END
ll=ll+1
ZeilenMem.ll=xmax
IF xmax<zmin THEN zmin=xmax
IF xmax>zmax THEN zmax=xmax
END
zmin=TRUNC(zmin/2+1)
l=1; a=""; flag=0
MD=MA.NewRun.Machine*ViewFak
DO UNTIL l>Zeilen
l=l+1
x=TRUNC((ZeilenMem.l - zmin)/(zmax-zmin)*Chars +.5)
b=TRUNC(ZeilenMem.l/10)/100 "kB"
y=LENGTH(b)
IF ZeilenMem.l > MD THEN DO
Zeichen="#"; flag=1
END
ELSE Zeichen="-"
a=a "'" COPIES(Zeichen,x)">" b COPIES(" ",Chars-x+10-y) "'"
END
IF flag=1 THEN pt="'Schwachstellen optimieren ("CPM.NewRun")'"
ELSE pt="'Weiter optimieren'"
bar="===================================================="
******/
SetWorkLock OFF
x=flag
IF x=1 THEN DO
SMode=flag
IF NewRun <= CP_Max THEN DO
l=start
IF l=1 THEN l=2
dd=10;
DO UNTIL l>end
ll=l; flag=0
le=MIN(ll+dd,end)
DO UNTIL ll>le
ll=ll+1
CMode=FrameMode.ll
MD=MA.CMode.Machine*ViewFak
IF FrameMem.ll > MD THEN DO
flag=NewRun
LEAVE
END
END
IF flag=2 THEN SetPref "COMPRESS 5"
ELSE IF flag=1 THEN SetPref "COMPRESS 4"
IF flag<3 & flag>0 THEN DO
Ende=0
SetArea "FROM" l "TO" l+dd-1
ACRepair
IF RC~=0 THEN LEAVE
ll=l
CMode=flag+1
DO UNTIL ll>l+dd
ll=ll+1
FrameMode.ll=CMode
END
END
l=l+dd
END
END
END
IF Ende~=0 THEN LEAVE
NewRun=NewRun+1
END
RETURN(0)
END